USE business;
GO

-- jeli w bazie istnieje tabela ...
IF OBJECT_ID('dbo.Liczby') IS NOT NULL
	DROP TABLE dbo.Liczby;   -- ... to j usuwamy
GO

-- tworzymy now tabel zawierajc dwie kolumny
CREATE TABLE dbo.Liczby
(
	kolumna1 INT,
	kolumna2 INT
)

-- uzupenienie tabeli danymi
BEGIN
	DECLARE @liczba1 INT, 
			@liczba2 INT, 
			@i INT;
	
	SET @i = 1
	-- w ptli wstawiamy 2 miliony danych
	WHILE (@i <= 2000000)
	BEGIN
		-- liczby wstawiane do tabeli s losowane
		SET @liczba1 = RAND() * 10;
		SET @liczba2 = RAND() * 10;
		-- wstawienie wiersza do tabeli
		INSERT INTO dbo.Liczby VALUES (@liczba1, @liczba2);
		SET @i = @i + 1; -- zwikszenie licznika ptli
	END;
END;






SELECT 
	kolumna1, 
	kolumna2, 
	kolumna1 + kolumna2 AS kolumna3 
FROM dbo.Liczby;





-- jeli w bazie istnieje funkcja
IF  OBJECT_ID('dbo.SumaLiczb') IS NOT NULL
	DROP FUNCTION dbo.SumaLiczb  -- ... to j usuwamy
GO

-- tworzymy now funkcj z dwoma parametrami wejciowymi typu INT
CREATE FUNCTION dbo.SumaLiczb(
	@liczba1 INT,
	@liczba2 INT)
RETURNS INT  -- funkcja bdzie zwraca funkcj INT
-- uywane s rekomendowane opcje funkcji
WITH SCHEMABINDING, RETURNS NULL ON NULL INPUT
AS
BEGIN
	-- w ciele funkcji dodawane s dwie liczby i zwracamy jest wynik
	RETURN @liczba1 + @liczba2;
END;
GO





SELECT 
	kolumna1, 
	kolumna2, 
	-- jako parametry funkcji podawane s wartoci z kolumny 1 i kolumny 2
	dbo.SumaLiczb(kolumna1, kolumna2) AS kolumna3 
FROM dbo.Liczby;
